package com.example.service;

import com.example.common.Result;
import com.example.common.PageResult;
import com.example.dto.ConsumptionRecordQueryDTO;
import com.example.vo.ConsumptionRecordVO;

import java.util.List;
import java.util.Map;

/**
 * 消费记录服务接口
 */
public interface ConsumptionRecordService {
    
    /**
     * 创建消费记录（预约确认时调用）
     */
    Result<Void> createConsumptionRecord(Long appointmentId);
    
    /**
     * 根据ID查询消费记录
     */
    Result<ConsumptionRecordVO> getConsumptionRecordById(Long id);
    
    /**
     * 根据订单号查询消费记录
     */
    Result<ConsumptionRecordVO> getConsumptionRecordByOrderNo(String orderNo);
    
    /**
     * 获取当前用户的消费记录列表
     */
    Result<List<ConsumptionRecordVO>> getMyConsumptionRecords();
    
    /**
     * 获取当前店长的收入记录列表
     */
    Result<List<ConsumptionRecordVO>> getStoreManagerIncomeRecords();
    
    /**
     * 分页查询消费记录
     */
    Result<PageResult<ConsumptionRecordVO>> getConsumptionRecordPage(ConsumptionRecordQueryDTO queryDTO);
    
    /**
     * 分页查询当前用户的消费记录
     */
    Result<PageResult<ConsumptionRecordVO>> getMyConsumptionRecordPage(int page, int size, ConsumptionRecordQueryDTO queryDTO);
    
    /**
     * 分页查询当前店长的收入记录
     */
    Result<PageResult<ConsumptionRecordVO>> getStoreManagerIncomeRecordPage(int page, int size, ConsumptionRecordQueryDTO queryDTO);
    
    /**
     * 获取消费统计信息（管理员使用）
     */
    Result<Map<String, Object>> getConsumptionStatistics();
    
    /**
     * 获取当前用户消费统计信息
     */
    Result<Map<String, Object>> getMyConsumptionStatistics();
    
    /**
     * 获取当前店长收入统计信息
     */
    Result<Map<String, Object>> getStoreManagerIncomeStatistics();
    
    /**
     * 获取今日消费统计
     */
    Result<Map<String, Object>> getTodayConsumptionStatistics();
    
    /**
     * 根据时间范围获取消费统计
     */
    Result<Map<String, Object>> getConsumptionStatisticsByDateRange(String startTime, String endTime);
} 